package com.bosssoft.common.result;

import lombok.Data;

/**
 * @className: Result
 * 后端统一返回的结果类
 * 包含了统一的返回结构，包括状态码、错误消息和具体数据
 * @author: zbh
 * @date: 2024/7/26 23:38
 */
@Data
public class Result<T>{
    /**
     * 状态码：1成功，0和其它数字为失败
     */
    private Integer code;
    /**
     * 错误信息
     */
    private String msg;
    /**
     * 具体数据
     */
    private T data;

    /**
     * 没有数据的成功结果
     * @author zbh
     * @date 2024/07/26 23:42
     * @return result 状态码为 1 的成功结果
     */
    public static <T> Result<T> success() {
        Result<T> result = new Result<>();
        result.code = 1;
        return result;
    }

    /**
     * 包含指定数据的成功结果
     * @author zbh
     * @date 2024/07/26 23:44
     * @param data 包含在结果中的数据
     * @return result 状态码为 1 并包含提供的数据的成功结果
     */
    public static <T> Result<T> success(T data) {
        Result<T> result = new Result<>();
        result.data = data;
        result.code = 1;
        return result;
    }

    /**
     * 包含错误消息的错误结果
     * @author zbh
     * @date 2024/07/26 23:44
     * @param msg 错误信息
     * @return result 状态码为 0 并包含错误消息的错误结果
     */
    public static <T> Result<T> error(String msg) {
        Result<T> result = new Result<>();
        result.msg = msg;
        result.code = 0;
        return result;
    }

}
